//package com.cn.jx.common.util.jpaQuery;
//
//import java.text.MessageFormat;
//import java.util.ArrayList;
//import java.util.List;
//
//import com.alibaba.fastjson.JSON;
//import com.jx.enumType.SQLSepEnum;
//import com.jx.util.Utility;
//
///**
// * <p>转换条件
// * <p>页面传入的json参数的条件转换为{@link QueryCondition 条件对象
// * 
// * @author <h1>jiangxu2  2019年11月20日</h1>
// * @version v1.11.20.2019
// * @since 1.0
// * @see #initCondition(Integer, Integer, String,String,String,String,boolean)
// */
//public class ConvertCondition {
//
//	/**
//	 * <p>转换条件的方法
//	 * <p>注意： status状态传入TRUE 表示查询有效的。系统自动筛选是否删除和有效的状态 FALSE 表示查询删除的无效的数据
//	 * <p>param参数为json格式  [{name:"name",operator:"EQ",value:"value"}]
//	 * <p>sort为排序字段 对象的属性，需要排序的
//	 * <p>order为排序规则 ASC DESC easyui特别之处和JPA正好相反
//	 * <p>page当前页 rows为每页大小 默认20
//	 * <p>返回{@link QueryCondition <tt>查询条件QueryCondition的对象</tt>}
//	 * @return
//	 * 
//	 * <pre>
//	 * QueryCondition cond= ConvertCondition.initCondition(page, rows, sort, order, param);
//	 * </pre>
//	 * 
//	 */
//    public static QueryCondition initCondition(PageCondition pc,String path){
//    	QueryCondition condit=new QueryCondition();
//    	condit.setPage(pc.getPage());
//    	condit.setRows(pc.getRows());
//    	condit.setSort(pc.getSort());
//    	condit.setOrder(pc.getOrder());
//    	condit.setStatus("recycle".equals(path)?false:true);
//    	if(Utility.isNotBlank(pc.getParam())){
//    		if(pc.getFlag()!=null && pc.getFlag()==2 && pc.getParam().contains("_")){
//    				String[] pms= pc.getParam().split(",");
//        			if(pms!=null && pms.length>0){
//        				List<ConditionField> plist=new ArrayList<ConditionField>();
//        				for(int i=0;i<pms.length;i++){
//        					String pp=pms[i];
//        					if(Utility.isNotBlank(pp)){
//        						String[] dition= pp.split("_");
//        						ConditionField cf=new ConditionField();
//        						cf.setName(dition[0]);
//        						cf.setOperator(getSqlSep(dition[1]));
//        						cf.setValue(dition[2]);
//        						plist.add(cf);
//        					}
//        				}
//        				condit.setConditions(plist);
//        			}
//    		}else{
//    			List<ConditionField> list=JSON.parseArray(pc.getParam(), ConditionField.class);
//        		list.forEach(cd->{
//        			if(Utility.isNotBlank(cd.getValue())){
//        				condit.getConditions().add(cd);
//        			}
//        		});
//        		
//    		}
//    	}
//    	return condit;
//    }
//    
//    private static SQLSepEnum getSqlSep(String str){
//    	switch (str) {
//		case "EQ":
//			return SQLSepEnum.EQ;
//		case "LIKE":
//			return SQLSepEnum.LIKE;
//		default:
//			break;
//		}
//		return null;
//    }
//    
//    
//    public static QueryCondition initCondition(Integer page,Integer rows,String sort,String order,String param,String path){
//    	QueryCondition condit=new QueryCondition();
//    	condit.setPage(page);
//    	condit.setRows(rows);
//    	condit.setSort(sort);
//    	condit.setOrder(order);
//    	condit.setStatus("recycle".equals(path)?false:true);
//    	if(Utility.isNotBlank(param)){
//    		List<ConditionField> list=JSON.parseArray(param, ConditionField.class);
//    		list.forEach(cd->{
//    			if(Utility.isNotBlank(cd.getValue())){
//    				condit.getConditions().add(cd);
//    			}
//    		});
//    		
//    	}
//    	return condit;
//    }
//    
//    public static QueryCondition initCondition(String sort,String order,String param,boolean ... status){
//    	QueryCondition condit=new QueryCondition();
//    	condit.setSort(sort);
//    	condit.setOrder(order);
//    	condit.setStatus((status!=null && status.length>0)?status[0]:true);
//    	if(Utility.isNotBlank(param)){
//    		List<ConditionField> list=JSON.parseArray(param, ConditionField.class);
//    		list.forEach(cf->{
//    			if(Utility.isNotBlank(cf.getValue())){
//    				condit.getConditions().add(cf);
//    			}
//    		});
//    	}
//    	return condit;
//    }
//    
//    /**
//     * 
//    * @Title:createWhere
//    * @Description:TODO(创建where条件)
//    * <p>邮箱地址: 524577360@qq.com
//    * @throws
//     */
//    public static String createWhere(String sql,QueryCondition cond){
//		boolean and=false;
//		if(sql.contains("where")){
//			if(sql.trim().endsWith("where")){
//				//表示where结尾的
//				and=false;
//			}else{
//				and=true;
//			}
//		}else{
//			sql=sql+" where ";
//			and=false;
//		}
//		StringBuilder whereSql = new StringBuilder();
//		List<ConditionField> listField = cond.getConditions();
//		for (ConditionField cfild : listField) {
//			if(and){
//				whereSql.append(" and ").append(getFormatWhere(cfild));
//			}else{
//				whereSql.append("  ").append(getFormatWhere(cfild));
//				and=true;
//			}
//		}
//		String resultsql=sql+whereSql;
//		if(resultsql.trim().endsWith("where")){
//			return resultsql.replace("where", "");
//		}
//		return resultsql;
//	}
//    
//    /**
//     * 
//    * @Title:createCountSql
//    * @Description:TODO(创建count条件)
//    * <p>邮箱地址: 524577360@qq.com
//    * @throws
//     */
//    public static String createCountSql(String sql){
//    	sql=sql.substring(sql.toUpperCase().lastIndexOf("FROM"),sql.length());
//    	return "select count(1) "+sql;
//    }
//    
//    /**
//     * 
//    * @Title:getFormatWhere
//    * @Description:TODO(格式化条件)
//    * <p>邮箱地址: 524577360@qq.com
//    * @throws
//     */
//    public static String  getFormatWhere(ConditionField cfild){
//		String field=cfild.getName();
//		SQLSepEnum sep=cfild.getOperator();
//		if("".equals(cfild.getValue()) || "null".equalsIgnoreCase(cfild.getValue())){
//			return MessageFormat.format("{0} IS NULL ", field);
//		}
//		switch (sep) {
//		case EQ:
//			return MessageFormat.format("{0}={1}", field,"'"+cfild.getValue()+"'");
//		case LIKE:
//			return MessageFormat.format("{0} like {1} ", field,"'%"+cfild.getValue()+"%'");
//		case LLIKE:
//			return MessageFormat.format("{0} like {1} ", field,"'%"+cfild.getValue()+"'");
//		case RLIKE:
//			return MessageFormat.format("{0} like {1} ", field,"'"+cfild.getValue()+"%'");
//		default:
//			break;
//		}
//		return null;
//	}
//    
//    /**
//     * 
//    * @Title:getFormatOrderBy
//    * @Description:TODO(排序)
//    * <p>邮箱地址: 524577360@qq.com
//    * @throws
//     */
//    public static  String getFormatOrderBy(QueryCondition pageParam){
//		String result=" ORDER BY {0} {1} ";
//		//定义默认排序规则 DESC
//		String order="desc";
//		String sort="createTime";
//		//如果排序字段为空的情况 
//		if(Utility.isBlank(pageParam.getSort())){
//			//看默认排序字段DefaultSort是否为空。如果有则按照默认字段排序。否则设置默认字段为createTime创建时间
//			sort=Utility.isBlank(pageParam.getDefaultSort())?sort:pageParam.getDefaultSort();
//		}else{
//			sort=pageParam.getSort();
//		}
//		
//		if(Utility.isBlank(pageParam.getOrder())){
//			order=Utility.isBlank(pageParam.getDefaultOrder())?order:pageParam.getDefaultOrder();
//		}else{
//			order=pageParam.getOrder();
//		}
//		
//		return MessageFormat.format(result, sort,order);
//	}
//    
//    /**
//	 * 
//	 * <p>模糊查询  {@link String 获取模糊查询的值}
//	 * @param val
//	 * @return
//	 */
//    public static String getLikeVal(String val){
//		return MessageFormat.format("%{0}%", val);
//	}
//	
//	/**
//	 * <p>模糊查询 以XX开头 模糊后面的  {@link String 获取模糊查询的值}
//	 * @param val
//	 * @return
//	 */
//    public static String getRLikeVal(String val){
//		return MessageFormat.format("{0}%", val);
//	}
//	
//	/**
//	 * 
//	 * <p>模糊查询 以XX结尾 模糊前面的  {@link String 获取模糊查询的值}
//	 * @param val
//	 * @return
//	 */
//    public static String getLLikeVal(String val){
//		return MessageFormat.format("%{0}", val);
//	}
//    
//}
